<p>不要在<code> for </code>循环中使用（<code> == </code>和<code> != </code>）作为循环是否终止的判断条件，因为它可能会导致死循环。</p>
<h2>不规范的代码示例</h2>

<pre>
for (int i = 1; i != 10; i += 2)  // 不合规。如果变量从9直升到11，它将变得无限。
{
  //...
} 
</pre>
<h2>正确的代码示例</h2>

<pre>
for (int i = 1; i &lt;= 10; i += 2)  // Compliant
{
  //...
} 
</pre>
<h2>Exceptions</h2>

<p>如果未在循环体内修改循环计数器，则忽略等号运算符，并且：</p>
<ul>
  <li>从结束值以下开始，并在每次迭代时加1。</li >
  <li>从结束值开始，并在每次迭代时递减1。</li>
</ul>
<p>当针对<code> null </code>进行测试时，也将忽略等号运算符。</p>
<pre>
for (int i = 0; arr[i] != null; i++) {
  // ...
}

for (int i = 0; (item = arr[i]) != null; i++) {
  // ...
}
</pre>
<h2>更多</h2>

<ul>
<li> MISRA C++:2008, 6-5-2</li>
<li> <a href="http://cwe.mitre.org/data/definitions/835">MITRE, CWE-835</a> - Loop with Unreachable Exit Condition ('Infinite Loop')</li>
<li> <a href="https://www.securecoding.cert.org/confluence/x/EwDJAQ">CERT, MSC21-C</a> - Use robust loop termination conditions</li>
<li> <a href="https://www.securecoding.cert.org/confluence/x/GwDJAQ">CERT, MSC21-CPP</a> - Use inequality to terminate a loop whose counter changes by more than one</li>
</ul>

